home *** CD-ROM | disk | FTP | other *** search
- 1) THE ORIGINAL MANDELBROT
- Z(n+1) = Z(n)^2 + C
- Xmin=-2.25 :Xsize=3 :Xmax=0.75
- Ymin=-1.5 :Ysize=3 :Ymax=1.5
-
- Z(n+1) = Z(n)^2 + C
- Z(n) = (x + yi)
- C = P + Qi
- xnew + ynewi = (x + yi)^2 + P + Qi
- = x^2 - y^2 + 2*x*yi + P + Qi
- xnew = x^2 - y^2 + P
- ynew = 2*x*y + Q
-
- ITERATION IN BASIC
- AT EACH (x,y)
- depth=0 :u=0 :v=0 ; if Julia then u=x :v=y :x=real :y=imag
- REPEAT
- usq = u*u
- vsq = v*v
- sqsum = usq + vsq
- REM checkpoint REM
- v = u*(v + v) + y
- u = usq - vsq + x
- N% = N%+1
- UNTIL depth=maxiter% OR sqsum>4
-
- ITERATION IN ARM CODE
- LDR depth,#0: LDR u,#0: LDR v,#0
- .loopstart
- FNmulti(uu,u,u) \test result, Bmaybe exit
- FNmulti(vv,v,v) \ditto
- .calc_heart
- \\
- FNmulti(r,u,v)
- ADD v,y,r,LSL#1
- SUB u,uu,vv
- ADD u,u,x
- \\
- \test depth
- \Bmaybe loopstart
- .exit
-
- 2) SELF SQUARED DRAGONS
- Z(n+1) = C * Z(n) * (1 - Z(n))
- Xmin=-2.25 :Xsize=6.5 :Xmax=4.25
- Ymin=-1.625 :Ysize=3.25 :Ymax=1.625
-
- Z(n+1) = C * Z(n) * (1 - Z(n))
- Z(n) = (x + yi)
- C = P + Qi
- xnew + ynewi = (P + Qi) * (x + yi) * (1 - x - yi)
- = (P + Qi) * (x - x^2 + y^2 - 2*x*yi + yi)
-
- LET tempx = x - (x^2 - y^2)
- tempy = 2*x*y - y
-
- xnew + ynewi = (P + Qi)*(tempx - tempy)
- xnew = P*tempx + Q*tempy
- ynew = Q*tempx - P*tempy
-
- ITERATION IN BASIC
- REM as Mandelbrot but u=0.5
- REM checkpoint REM
- A = u - usq + vsq
- B = u*v
- B = B + B - v
- u = P*A - Q*B
- v = P*B + Q*A
-
- ITERATION IN ARM CODE
- \as Mandelbrot but LDR u,half
- .calc_heart
- \\
- SUB r,vv,uu \tempsq
- ADD r,r,u \tempsq+X
- FNmulti(m,u,v) \tempxy
- RSB m,v,m,LSL#1 \2*tempxy-Y
- FNmulti(uu,x,r) \Q*(tempsq+X)
- FNmulti(vv,y,m) \P*(2*tempxy-Y)
- ADD u,uu,vv \Q*(tempsq+X)+P*(2*tempxy-Y)
- FNmulti(uu,y,r) \P*(tempsq+X)
- FNmulti(vv,x,m) \Q*(2*tempxy-Y)
- SUB v,uu,vv \Q*(2*tempxy-Y)-P*(tempsq+X)
- \\
-
-
- 3) CUBIC MANDELBROID
- Z(n+1) = Z(n)^4 + C
- Xmin=-1.2 :Xsize=2.4 :Xmax=1.2
- Ymin=-1.5 :Ysize=3.0 :Ymax=1.5
-
- Z(n+1) = Z(n)*Z(n)*Z(n) + C
- Z(n) = (x + yi)
- C = P + Qi
- xnew + ynewi = (x + yi)^3 + P + Qi
- = (x + yi)*(x^2 - y^2 + 2*x*yi) + P + Qi
- = x^3 + 3*x^2*yi - 3*x*y^2 - y^3i + P + Qi
- xnew = x^3 - 3*x*y^2 + P
- ynew = 3*x^2*y -y^3 + Q = y*(3*x^2 - y^2) + Q
-
- ITERATION IN BASIC
- REM as Mandelbrot
- REM checkpoint REM
- u3 = usq*u
- v3 = vsq*v
- A = u3 - 3*u*vsq + x
- B = 3*v*usq - v3 + y
- u = A
- v = B
-
- ITERATION IN ARM CODE
- \as Mandelbrot
- .calc_heart
- \\
- FNmulti(n,uu,u) \u3
- FNmulti(m,u,vv) \u*vsq
- ADD m,m,m,LSL#1 \3*u*vsq
- SUB m,n,m \u3-3*u*vsq
- ADD r,m,x \A
- FNmulti(n,v,vv) \v3
- FNmulti(m,uu,v) \v*usq
- ADD m,m,m,LSL#1 \3*v*usq
- SUB m,m,n \3*v*usq-v3
- ADD m,m,y \B
- MOV u,r
- MOV v,m
- \\
- 4) QUARTIC MANDELBROID
- Z(n+1) = Z(n)^4 + C
- Xmin=-1.2 :Xsize=2.4 :Xmax=1.2
- Ymin=-1.5 :Ysize=3.0 :Ymax=1.5
-
- Z(n+1) = Z(n)*Z(n)*Z(n)*Z(n) + C
- Z(n) = (x + yi)
- C = P + Qi
- xnew + ynewi = (x + yi)^4 + P + Qi
- = (x + yi)*(x^3 + 3*x^2*yi - 3*x*y^2 - y^3i) + P + Qi
- = x^4 + 4*x^3*yi - 6*x^2*y^2 - 4*x*y^3i + y^4 + P + Qi
- xnew = x^4 - 6*x^2*y^2 + y^4 + P
- ynew = 4*x^3*y -4*x*y^3 + Q = 4*x*y*(x^2 - y^2) + Q
-
- ITERATION IN BASIC
- REM as Mandelbrot
- REM checkpoint REM
- A = usq*usq + 6*usq*vsq + vsq*vsq + x
- B = 4*u*v*(usq - vsq) + y
- u = A
- v = B
-
- ITERATION IN ARM CODE
- \as Mandelbrot
- .calc_heart
- \\
- SUB n,uu,vv \usq-vsq
- FNmulti(m,u,v) \u*v
- FNmulti(r,n,m) \u*v*(usq-vsq)
- ADD v,y,r,LSL#2 \4*u*v*(usq-vsq)+y
- FNmulti(n,uu,uu) \usq*usq
- FNmulti(m,vv,vv) \vsq*vsq
- ADD u,n,m \usq*usq+vsq*vsq
- ADD u,u,x \usq*usq+vsq*vsq+x
- FNmulti(n,uu,vv) \usq*vsq
- MOV m,n,LSL#2 \4*usq*vsq
- MOV n,n,LSL#1 \2*usq*vsq
- ADD n,n,m \6*usq*vsq
- SUB u,u,n \usq*usq+vsq*vsq+x-6*usq*vsq
- \\
-
- 5) IKENAGA
- Z(n+1) = Z(n)^3 + (C - 1)*Z(n) - C
- Xmin=-1.3 :Xmax=1.0 :Xsize=2.3
- Ymin=-1.0 :Ymax=1.0 :Ysize=-2.0
-
- Z(n+1) = Z(n)^3 + (C - 1)*Z(n) - C
- Z(n) = (x + yi)
- C = P + Qi
- xnew + ynewi = (x + yi)^3 + (P + Qi)*(x + yi) - (P + Qi)
- = x^3 + 3*x^2*yi - 3*x*y^2 - y^3i + P*x + P*yi
- + Q*xi - Q*y - P - Qi
-
- xnew = x^3 -3*x*y^2 + P*x - Q*y - P
- ynew = 3*x^2*y -y^3 + P*y + Q*x - Q
-
- ITERATION IN BASIC
- REM as Mandelbrot
- REM checkpoint REM
- A = u*(uu - 3*vv + x - 1) - v*y - x
- B = v*(3*uu - vv + x - 1) + u*y - y
- u = A
- v = B
-
-
- ITERATION IN ARM CODE
- \as Mandelbrot
- .calc_heart
- \\
- ADD r,vv,vv \2*vv
- ADD r,r,vv \3*vv
- SUB r,uu,r \uu-3*vv
- ADD r,r,x \uu-3*vv+x
- FNmulti(m,r,u) \u*(uu-3*vv+x)
- SUB m,m,u \u*(uu-3*vv+x-1)
- FNmulti(n,v,y) \v*y
- ADD n,n,x \v*y+x
- SUB m,m,n \u*(uu-3*vv+x-1)-v*y-x
- \
- ADD r,uu,uu \2*uu
- ADD r,r,uu \3*uu
- SUB r,r,vv \3*uu-vv
- ADD r,r,x \3*uu-vv+x
- FNmulti(n,r,v) \v*(3*uu-vv+x)
- SUB n,n,v \v*(3*uu-vv+x-1)
- FNmulti(r,u,y) \u*y
- SUB r,r,y \u*y-y
- ADD v,r,n \v*(3*uu-vv+x-1)+u*y-y
- MOV u,m
- \\
-
-
- 6) USHIKI'S PHOENIX
- Z(n+1)=Z(n)*Z(n)*P*Z(n-1)+Q
- Xmin=-2.1: Xsize=3.6: Xmax=1.5
- Ymin=-2.0: Ysize=4.0: Ymax=2.0
-
- ITERATION IN BASIC
- REM as Mandelbrot
- REM checkpoint REM
- vtemp = 2*u*v + y*vprev
- utemp = usq - vsq + x + y*uprev
- uprev=u
- vprev=v
- u=utemp
- v=vtemp
-
- ITERATION IN ARM CODE
- \as Mandelbrot but LDR n,#0 : LDR m,#0
- .calc_heart
- \\
- SUB r,uu,vv \uu-vv
- FNmulti(uu,y,n) \y*uprev
- ADD r,r,uu \uu-vv+y*uprev
- ADD r,r,x \utemp
- FNmulti(uu,u,v) \u*v
- FNmulti(vv,y,m) \y*vprev
- ADD vv,vv,uu,LSL#1 \vtemp
- MOV n,u
- MOV m,v
- MOV u,r
- MOV v,vv
- \\
-
-